home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mintman / mintbind.h < prev    next >
C/C++ Source or Header  |  1991-10-14  |  6KB  |  202 lines

  1. #ifndef _MINTBIND_H
  2. #define _MINTBIND_H
  3.  
  4. #ifndef _OSBIND_H
  5. #include <osbind.h>
  6. #endif
  7.  
  8. #ifdef __GNUC__
  9. #define trap_1_wwlw(n, a, b, c)                        \
  10. ({                                    \
  11.     register long retvalue __asm__("d0");                \
  12.     short _a = (short)(a);                        \
  13.     long  _b = (long) (b);                        \
  14.     short  _c = (short) (c);                    \
  15.                                         \
  16.     __asm__ volatile                        \
  17.     ("\
  18.         movw    %4,sp@-; \
  19.         movl    %3,sp@-; \
  20.         movw    %2,sp@-; \
  21.         movw    %1,sp@-; \
  22.         trap    #1;    \
  23.         addw    #10,sp "                    \
  24.     : "=r"(retvalue)            /* outputs */        \
  25.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  26.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  27.     );                                \
  28.     retvalue;                            \
  29. })
  30.  
  31. #define trap_1_wwww(n, a, b, c)                        \
  32. ({                                    \
  33.     register long retvalue __asm__("d0");                \
  34.     short _a = (short)(a);                        \
  35.     short  _b = (short)(b);                        \
  36.     short  _c = (short)(c);                        \
  37.                                         \
  38.     __asm__ volatile                        \
  39.     ("\
  40.         movw    %4,sp@-; \
  41.         movw    %3,sp@-; \
  42.         movw    %2,sp@-; \
  43.         movw    %1,sp@-; \
  44.         trap    #1;    \
  45.         addw    #10,sp "                    \
  46.     : "=r"(retvalue)            /* outputs */        \
  47.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  48.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  49.     );                                \
  50.     retvalue;                            \
  51. })
  52.  
  53. #define trap_1_wwl(n, a, b)                        \
  54. ({                                    \
  55.     register long retvalue __asm__("d0");                \
  56.     short _a = (short)(a);                        \
  57.     long  _b = (long) (b);                        \
  58.                                         \
  59.     __asm__ volatile                        \
  60.     ("\
  61.         movl    %3,sp@-; \
  62.         movw    %2,sp@-; \
  63.         movw    %1,sp@-; \
  64.         trap    #1;    \
  65.         addw    #8,sp "                        \
  66.     : "=r"(retvalue)            /* outputs */        \
  67.     : "g"(n), "r"(_a), "r"(_b)        /* inputs  */        \
  68.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  69.     );                                \
  70.     retvalue;                            \
  71. })
  72.  
  73. #else
  74.  
  75. #define trap_1_w(n)        gemdos(n)
  76. #define trap_1_wl(n,a)        gemdos(n, (long)(a))
  77. #define trap_1_ww(n,a)        gemdos(n, a)
  78. #define trap_1_www(n,a,b)    gemdos(n, a, b)
  79. #define trap_1_wwww(n,a,b,c)    gemdos(n, a, b, c)
  80. #define trap_1_wwlw(n,a,b,c)    gemdos(n, a, (long)b, c)
  81. #define trap_1_wwl(n, a, b)    gemdos(n, a, (long)b)
  82. #define trap_1_wwll(n, a, b, c)    gemdos(n, a, (long)b, (long)c)
  83. #define trap_1_wlww(n, a, b, c)    gemdos(n, (long)a, b, c)
  84. #define trap_13_w(n)        bios(n)
  85. #define trap_14_w(n)        xbios(n)
  86.  
  87. #endif
  88.  
  89. #define    Syield()                        \
  90.         trap_1_w(0xff)
  91. #define Fpipe(ptr)                        \
  92.         trap_1_wl(0x100, (long)(ptr))
  93. #define Fcntl(f, arg, cmd)                    \
  94.         trap_1_wwlw(0x104, (short)(f), (long)(arg), (short)(cmd))
  95. #define Finstat(f)                        \
  96.         trap_1_ww(0x105, (short)(f))
  97. #define Foutstat(f)                        \
  98.         trap_1_ww(0x106, (short)(f))
  99. #define Fgetchar(f, mode)                    \
  100.         trap_1_www(0x107, (short)(f), (short)(mode))
  101. #define Fputchar(f, ch, mode)                    \
  102.         trap_1_wwlw(0x108, (short)(f), (long)(ch), (short)(mode))
  103.  
  104. #define Pwait()                            \
  105.         trap_1_w(0x109)
  106. #define Pnice(delta)                        \
  107.         trap_1_ww(0x10a, (short)(delta))
  108. #define Pgetpid()                        \
  109.         trap_1_w(0x10b)
  110. #define Pgetppid()                        \
  111.         trap_1_w(0x10c)
  112. #define Pgetpgrp()                        \
  113.         trap_1_w(0x10d)
  114. #define Psetpgrp(pid, grp)                    \
  115.         trap_1_www(0x10e, (short)(pid), (short)(grp))
  116. #define Pgetuid()                        \
  117.         trap_1_w(0x10f)
  118. #define Psetuid(id)                        \
  119.         trap_1_ww(0x110, (short)(id))
  120. #define Pkill(pid, sig)                        \
  121.         trap_1_www(0x111, (short)(pid), (short)(sig))
  122. #define Psignal(sig, handler)                    \
  123.         trap_1_wwl(0x112, (short)(sig), (long)(handler))
  124. #define Pvfork()                        \
  125.         trap_1_w(0x113)
  126. #define Pgetgid()                        \
  127.         trap_1_w(0x114)
  128. #define Psetgid(id)                        \
  129.         trap_1_ww(0x115, (short)(id))
  130. #define Psigblock(mask)                        \
  131.         trap_1_wl(0x116, (unsigned long)(mask))
  132. #define Psigsetmask(mask)                    \
  133.         trap_1_wl(0x117, (unsigned long)(mask))
  134. #define Pusrval(arg)                        \
  135.         trap_1_wl(0x118, (long)(arg))
  136. #define Pdomain(arg)                        \
  137.         trap_1_ww(0x119, (short)(arg))
  138. #define Psigreturn()                        \
  139.         trap_1_w(0x11a)
  140. #define Pfork()                            \
  141.         trap_1_w(0x11b)
  142. #define Pwait3(flag, rusage)                    \
  143.         trap_1_wwl(0x11c, (short)(flag), (long)(rusage))
  144. #define Fselect(time, rfd, wfd, xfd)                \
  145.         trap_1_wwlll(0x11d, (unsigned short)(time), (long)(rfd), \
  146.                 (long)(wfd), (long)(xfd))
  147. #define Prusage(rsp)                        \
  148.         trap_1_wl(0x11e, (long)(rsp))
  149. #define Psetlimit(i, val)                    \
  150.         trap_1_wwl(0x11f, (short)(i), (long)(val))
  151.  
  152. #define Talarm(sec)                        \
  153.         trap_1_wl(0x120, (long)(sec))
  154. #define Pause()                            \
  155.         trap_1_w(0x121);
  156. #define Sysconf(n)                        \
  157.         trap_1_ww(0x122, (short)(n))
  158. #define Psigpending()                        \
  159.         trap_1_w(0x123)
  160. #define Dpathconf(name, which)                    \
  161.         trap_1_wlw(0x124, (long)(name), (short)(which))
  162.  
  163. #define Pmsg(mode, mbox, msg)                    \
  164.         trap_1_wwll(0x125, (short)(mode), (long)(mbox), (long)(msg))
  165. #define Fmidipipe(pid, in, out)                    \
  166.         trap_1_wwww(0x126, (short)(pid), (short)(in),(short)(out))
  167. #define Prenice(pid, delta)                    \
  168.         trap_1_www(0x127, (short)(pid), (short)(delta))
  169. #define Dopendir(name, flag)                    \
  170.         trap_1_wlw(0x128, (long)(name), (short)(flag))
  171. #define Dreaddir(len, handle, buf)                \
  172.         trap_1_wwll(0x129, (short)(len), (long)(handle), (long)(buf))
  173. #define Drewinddir(handle)                    \
  174.         trap_1_wl(0x12a, (long)(handle))
  175. #define Dclosedir(handle)                    \
  176.         trap_1_wl(0x12b, (long)(handle))
  177. #define Fxattr(flag, name, buf)                    \
  178.         trap_1_wwll(0x12c, (short)(flag), (long)(name), (long)(buf))
  179. #define Flink(old, new)                        \
  180.         trap_1_wll(0x12d, (long)(old), (long)(new))
  181. #define Fsymlink(old, new)                    \
  182.         trap_1_wll(0x12e, (long)(old), (long)(new))
  183. #define Freadlink(siz, buf, linknm)                \
  184.         trap_1_wwll(0x12f, (short)(siz), (long)(buf), (long)(linknm))
  185. #define Dcntl(cmd, name, arg)                    \
  186.         trap_1_wwll(0x130, (short)(cmd), (long)(name), (long)(arg))
  187. #define Fchown(name, uid, gid)                    \
  188.         trap_1_wlww(0x131, (long)(name), (short)(uid), (short)(gid))
  189. #define Fchmod(name, mode)                    \
  190.         trap_1_wlw(0x132, (long)(name), (short)(mode))
  191. #define Pumask(mask)                        \
  192.         trap_1_ww(0x133, (short)(mask))
  193.  
  194. #define Dos_tab()                        \
  195.         trap_1_w(-1)
  196. #define Bios_tab()                        \
  197.         trap_13_w(-1)
  198. #define Xbios_tab()                        \
  199.         trap_14_w(-1)
  200.  
  201. #endif /* _MINTBIND_H */
  202.